module structure_init_1;

typedef struct {
   string filter_name;
   byte unsigned number_of_taps ;
   real fs ;
   } filter_info ;
   
filter_info ddc_filters[5:0] ; 

initial
begin
   ddc_filters[0] = '{ "HB1", 17, 122.88e6};                                // positional association
   ddc_filters[1] = '{ filter_name:"HB2", fs:61.44e6, number_of_taps:15 };  // named association
   ddc_filters[2] = '{default:0};                                           // default to 0, filter name would be unassigned
   ddc_filters[3] = '{ filter_name:"HB4", fs:30.72e6, number_of_taps:15 };  // positional assignment
   ddc_filters[4] = '{string:"HB5", default:0};                             // filter name to HB5, other fields to 0
   ddc_filters[5] = '{default:"A"};                                        
   
   $display("Filter Name: %s, No_of_Taps: %d, Sampling Frequency: %e", ddc_filters[0].filter_name, 
                                                           ddc_filters[0].number_of_taps, ddc_filters[0].fs);
   $display("Filter Name: %s, No_of_Taps: %d, Sampling Frequency: %e", ddc_filters[1].filter_name, 
                                                           ddc_filters[1].number_of_taps, ddc_filters[1].fs);
   $display("Filter Name: %s, No_of_Taps: %d, Sampling Frequency: %e", ddc_filters[2].filter_name, 
                                                           ddc_filters[2].number_of_taps, ddc_filters[2].fs);
   $display("Filter Name: %s, No_of_Taps: %d, Sampling Frequency: %e", ddc_filters[3].filter_name, 
                                                           ddc_filters[3].number_of_taps, ddc_filters[3].fs);
   $display("Filter Name: %s, No_of_Taps: %d, Sampling Frequency: %e", ddc_filters[4].filter_name, 
                                                           ddc_filters[4].number_of_taps, ddc_filters[4].fs);
   $display("Filter Name: %s, No_of_Taps: %d, Sampling Frequency: %e", ddc_filters[5].filter_name, 
                                                           ddc_filters[5].number_of_taps, ddc_filters[5].fs);
end

endmodule
